package homework.day05;

/**
 * @author ThinkBook
 */
public class Test02 {
//### 面向过程的五子棋游戏设计思路
//
//1. **初始化游戏**
//    - 创建一个 15x15 的棋盘，用二维数组表示，初始化所有位置为空（可以用数字表示，0 表示空，1 表示黑子，2 表示白子）。
//    - 设定当前轮到黑子先行。
//
//2. **游戏进行**
//     - 用户点击棋盘的某个位置（第几行、第几列），程序接收到点击事件后，检查该位置是否为空。
//     - 如果该位置为空，则将当前玩家的棋子（黑子或白子）放置在该位置。
//     - 棋子放置后，检查是否有五子连珠（横向、纵向、斜向）：
//     - 横向：从左到右检查是否有连续五个相同棋子。
//     - 纵向：从上到下检查是否有连续五个相同棋子。
//     - 斜向（左上到右下、右上到左下）：分别检查是否有连续五个相同棋子。
//     - 如果有五子连珠，判定当前玩家胜利，游戏结束。
//     - 如果棋盘已满且无五子连珠，则平局结束游戏。
//
//3. **切换玩家**
//     - 每次落子后，切换当前玩家，即黑子和白子轮流下棋。
//
//4. **游戏结束**
//     - 当有玩家胜利或棋盘填满时，游戏结束，显示胜利方或平局信息。
//     - 提供重新开始游戏的选项，清空棋盘，重新开始游戏流程。
//
//### 面向对象的五子棋游戏设计思路
//
//1. **棋盘类 (`Board`类)**
//     - 属性：二维数组 `board` 表示棋盘状态。
//     - 方法：`place_piece(row, col, player)
//     ` 放置棋子，`check_win(player)
//     ` 检查某玩家是否胜利，`is_full()
//     ` 判断棋盘是否已满等。
//
//2. **玩家类 (`Player`类)**
//     - 属性：玩家类型（黑子或白子）。
//     - 方法：`make_move(board)` 在棋盘上落子的方法。
//
//3. **游戏控制类 (`Game`类)**
//     - 属性：棋盘对象，两个玩家对象，当前轮到哪个玩家。
//     - 方法：`start_game()` 游戏开始，控制玩家落子顺序，检查游戏是否结束等。
//
//4. **游戏流程**
//     - 创建 `Board` 对象和两个 `Player` 对象。
//     - 在 `Game` 类中循环控制玩家轮流落子，每次落子后检查是否有玩家胜利或棋盘已满。
//     - 根据游戏状态显示胜利或平局信息，提供重新开始游戏的选项。

}
